/*
 * 描          述:  <描述>
 * 修  改   人:  PengQingyang
 * 修改时间:  2022年5月26日
 * <修改描述:>
 */
package com.tx.component.file.configurator;

import com.tx.component.file.catalog.ViewUrlHandler;
import com.tx.component.file.catalog.VitualFileCatalogPermissionEnum;

/**
 * 文件资源加载配置器<br/>
 * <功能详细描述>
 * 
 * @author  PengQingyang
 * @version  [版本号, 2022年5月26日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public abstract class VitualFileCatalogConfigurator {
    
    /**
     * 阿里云OSSFCResourceFactory
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return AliyunOSSFCResourceLoaderFactory [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    protected MinIOFCResourceLoaderBuilder minioLoaderBuilder() {
        return MinIOFCResourceLoaderBuilder.newInstance();
    }
    
    /**
     * 阿里云OSSFCResourceFactory
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return AliyunOSSFCResourceLoaderFactory [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    protected AliyunOSSFCResourceLoaderBuilder aliyunOSSLoaderBuilder() {
        return AliyunOSSFCResourceLoaderBuilder.newInstance();
    }
    
    /**
     * 本地的FCResourceFactory
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return LocalFCResourceFactory [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    protected LocalFCResourceLoaderBuilder localLoaderBuilder() {
        return LocalFCResourceLoaderBuilder.newInstance();
    }
    
    /**
     * 本地的FCResourceFactory
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return LocalFCResourceFactory [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    protected VFSFCResourceLoaderBuilder vfsLoaderBuilder() {
        return VFSFCResourceLoaderBuilder.newInstance();
    }
    
    /**
     * 返回目录名<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return String [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    public abstract String catalog();
    
    /**
     * 资源加载器工厂<br/>
     * <功能简述>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return FCResourceLoaderFactory [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    public abstract FCResourceLoaderBuilder builder();
    
    /**
     * 返回ViewUrl的生成处理器<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return ViewUrlHandler [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    public ViewUrlHandler viewUrlHandler() {
        return new ViewUrlHandler() {
        };
    }
    
    /**
     * 文件目录权限<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return FileCatalogPermissionEnum [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    public VitualFileCatalogPermissionEnum permission() {
        return VitualFileCatalogPermissionEnum.PUBLIC_READ_WRITE;
    }
}
